var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
const mongoose = require('mongoose');
require('./lib/db') 
const queryString = require('querystring')
var app = express();

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));  // 设置公用的静态资源 public

/*
// 测试商品
// const goods = require('./lib/model/goods');
// new goods({
//   title: 'Note 11 Pro系列',
//   price: 1799,
//   banner: ['4.jpg'],
//   desc: '三星AMOLED高刷屏',
//   detail: '<p>Note 11 Pro 这里是详情</p>',
//   hasSku: true,
//   sku: {
//     tree: [
//       {
//         k: '颜色',
//         k_s: 's1',
//         v: [
//           {
//             id: 1,
//             name: '红色',
//             imgUrl: '4.jpg',
//             previewImgUrl: '4.jpg'
//           },
//           {
//             id: 2,
//             name: '蓝色',
//             imgUrl: '3.jpg',
//             previewImgUrl: '4.jpg'
//           }
//         ]
//       },
//       {
//         k: '内存',
//         k_s: 's2',
//         v: [
//           {
//             id: 1,
//             name: '4+128',
//           },
//           {
//             id: 2,
//             name: '4+256',
//           },
//           {
//             id: 3,
//             name: '8+256',
//           },
//           {
//             id: 4,
//             name: '8+512',
//           }
//         ]
//       }
//     ],
//     list: [
//       {
//         id: new mongoose.Types.ObjectId,
//         price: 1,
//         stock_num: 1,
//         s1: 1,
//         s2: 1
//       },
//       {
//         id: new mongoose.Types.ObjectId,
//         price: 2,
//         stock_num: 1,
//         s1: 2,
//         s2: 1
//       },
//       {
//         id: new mongoose.Types.ObjectId,
//         price: 3,
//         stock_num: 1,
//         s1: 1,
//         s2: 2
//       },
//       {
//         id: new mongoose.Types.ObjectId,
//         price: 4,
//         stock_num: 1,
//         s1: 1,
//         s2: 3
//       }
//     ]
//   }
// }).save()

*/

// 商品列表接口
// 引入商品表
const GOODS = require('./lib/model/goods')
// req 是请求   res是响应
// 商品列表
app.get('/list', (req,res)=>{
  GOODS.find({}, (err,result)=>{
    if (!err) {
      res.json({
        code: 200,
        data: result
      })
    }else{
      res.json({
        code: 400,
        data: '失败，联系管理员'
      })
    }
  })
})

// 商品详情
app.get('/detail', (req,res)=>{
  // 获取字符下标 indexOf()
  // 截取字符串  
  // substr(index)
  // split()  将字符串分割成数组

   // /detail?id=xxxx
  let str = req.url.substr(req.url.indexOf('?')+1)  // 截取以后的字符串   id=xxx&a=b&c=d
  let obj = queryString.parse(str)  // {id:xxx,a:''}
  /**
   * let str = req.url  // /detail?id=xxxx
    let index = str.indexOf('?')+1
    str = str.substr(index)  // 截取以后的字符串   id=xxx&a=b&c=d
    let obj = queryString.parse(str)  // {id:xxx,a:''}
   * 
   */
  // /detail?id=2
  // id前端传递给后端
  // 根据id查询商品
  // 查询到商品的详情数据之后，进行数据响应
  GOODS.findById(obj.id, (err, result)=>{
    res.json({
      code: 200,
      data: result
    })
  })
})



app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;
